package com.yuanian.ecsplus.meta.vo;

import com.yuanian.ecsplus.meta.Meta;
import com.yuanian.ecsplus.model.vo.BaseVoModel;
import com.yuanian.ecsplus.page.Pagination;

import java.util.List;
import java.util.Map;

/**
 * vo的元数据
 * @param <T>
 */
public interface MetaVo<T extends BaseVoModel> extends Meta<T> {

    /**
     * 查找当前实体类的字段配置并附加对应的值
     * @param sql
     * @return
     */
    List<Map> findFieldListWithValueMap(String sql);

    /**
     * 分页查询
     * @param sql
     * @param limit
     * @param offset
     * @param totalResults
     * @param orderBy
     * @return
     */
    Pagination<Map> findFieldListWithValueMap(String sql, int limit, int offset, boolean totalResults, String orderBy);

    /**
     * 分页查询
     * @param sql
     * @param limit
     * @param offset
     * @param totalResults
     * @param orderBy
     * @param <C>
     * @return
     */
    Pagination<T> findFieldListWithValue(String sql, int limit, int offset, boolean totalResults, String orderBy);

    /**
     * 查找当前实体类的字段配置
     * @param initData
     * @param <C>
     * @return vo
     */
    T findFieldList(Map initData, boolean insertFlag);

    /**
     * 查找当前实体类的字段配置
     * @param initData 初始化数据
     * @return map
     */
    Map findFieldListMap(Map initData, boolean insertFlag);

}
